package com.example.administrator.activity.Homework.Homework4;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.example.administrator.activity.R;

public class CalaulateActivity extends AppCompatActivity {

    EditText ed;
    TextView tv;
    Button btn_back, btn_clear, btn_7, btn_8, btn_9, btn_div;
    Button btn_4, btn_5, btn_6, btn_mul, btn_1, btn_2, btn_3, btn_sub;
    Button btn_0, btn_point, btn_equal, btn_add;

    /**
     * 2个操作数，操作符
     * @param savedInstanceState
     */
    double n1,n2;
    String op;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 关联布局
         */
        setContentView(R.layout.activity_calaulate);
        /**
         * 关联控件
         */
        init();
        /**
         * 点击事件
         */
        View.OnClickListener click=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.ch2_calc_btn_0:
                    case R.id.ch2_calc_btn_1:
                    case R.id.ch2_calc_btn_2:
                    case R.id.ch2_calc_btn_3:
                    case R.id.ch2_calc_btn_4:
                    case R.id.ch2_calc_btn_5:
                    case R.id.ch2_calc_btn_6:
                    case R.id.ch2_calc_btn_7:
                    case R.id.ch2_calc_btn_8:
                    case R.id.ch2_calc_btn_9:
                        number(v);
                        break;
                    case R.id.ch2_calc_btn_point:
                        point();
                        break;
                    case R.id.ch2_calc_btn_add:
                    case R.id.ch2_calc_btn_sub:
                    case R.id.ch2_calc_btn_mul:
                    case R.id.ch2_calc_btn_div:
                        operat(v);
                        break;

                    case R.id.ch2_calc_btn_equal:
                        equal();
                        break;
                    case R.id.ch2_calc_btn_back:
                        back();
                        break;
                    case R.id.ch2_calc_btn_clear:
                        clear();
                        break;
                }
            }
        };
        /**
         * 按钮绑定点击事件
         */
        btn_1.setOnClickListener(click);
        btn_2.setOnClickListener(click);
        btn_3.setOnClickListener(click);
        btn_4.setOnClickListener(click);
        btn_5.setOnClickListener(click);
        btn_6.setOnClickListener(click);
        btn_7.setOnClickListener(click);
        btn_8.setOnClickListener(click);
        btn_9.setOnClickListener(click);
        btn_back.setOnClickListener(click);
        btn_clear.setOnClickListener(click);
        btn_add.setOnClickListener(click);
        btn_sub.setOnClickListener(click);
        btn_mul.setOnClickListener(click);
        btn_div.setOnClickListener(click);
        btn_point.setOnClickListener(click);
        btn_equal.setOnClickListener(click);
    }

    private void clear() {
        n1=0;
        n2=0;
        op="";
    ed.setText("");
    tv.setText("");
    }

    /**
     * 删除最后一个数字，光标定位到最后
     * 字符串的操作：取子串
     */
    private void back() {
        String s=ed.getText().toString();
       s=s.substring(0,s.length()-1);
        ed.setText(s);
        ed.setSelection(s.length());
    }

    /**
     * 点击"="时
     * 1）记录下操作数2的值
     * 2）根据操作符：计算出2个数的结果
     * 3）文本框内容：计算过程和结果
     * 4）输入框：结果
     */
    private void equal() {
        String s2=ed.getText().toString();
        n2=Double.parseDouble(s2);
        double result=0;
        if (op.equals("+")){
            result=n1+n2;
        }else if (op.equals("-")){
            result=n1-n2;
        }else if (op.equals("*")){
            result=n1*n2;
        }else if (op.equals("/")){
            result=n1/n2;
        }
        String s=tv.getText().toString();
        tv.setText(s+n2+"="+result);
        ed.setText(result+"");

    }

    /**
     * 点击“+”、“-”、“*”、“/”时，将内容放入输出框，
     * 输入框清空（要记录下操作数1的值，只考虑2个数的计算）
     * 1)记录下操作数1：操作符
     * 2)将输入框内的内容与操作符连接，显示在下面的文本框
     * 3) 输入框清空
     * @param v
     */
    private void operat(View v) {
        String s1=ed.getText().toString();
        n1=Double.parseDouble(s1);
        Button button= (Button) v;
        op=button.getText().toString();

        tv.setText(n1+op);
        ed.setText("");
    }

    /**
     * 点击小数点“.”时，要判断如果已经有小数点了，就不做任何操作，
     * 没有小数点的话，将数字加上小数点,光标定位到最后
     */
    private void point() {
        String s=ed.getText().toString();
        if (!s.contains(".")){
            s=s+".";
            ed.setText(s);
            ed.setSelection(s.length());
        }


    }

    /**
     * （1）点击0到9数字按钮时，输入框内显示值为：
     * 原来的值加上新点击的数字，注意要将光标定位在最后。
     * @param v
     */
    private void number(View v) {
        Button button = (Button) v;
        String s=ed.getText().toString()+button.getText().toString();
        ed.setText(s);
        ed.setSelection(s.length());

    }


    private void init() {
        ed = findViewById(R.id.ch2_calc_ed);
        tv = findViewById(R.id.ch2_calc_tv2);
        btn_0 = findViewById(R.id.ch2_calc_btn_0);
        btn_1 = findViewById(R.id.ch2_calc_btn_1);
        btn_2 = findViewById(R.id.ch2_calc_btn_2);
        btn_3 = findViewById(R.id.ch2_calc_btn_3);
        btn_4 = findViewById(R.id.ch2_calc_btn_4);
        btn_5 = findViewById(R.id.ch2_calc_btn_5);
        btn_6 = findViewById(R.id.ch2_calc_btn_6);
        btn_7 = findViewById(R.id.ch2_calc_btn_7);
        btn_8 = findViewById(R.id.ch2_calc_btn_8);
        btn_9 = findViewById(R.id.ch2_calc_btn_9);
        btn_back = findViewById(R.id.ch2_calc_btn_back);
        btn_clear = findViewById(R.id.ch2_calc_btn_clear);
        btn_add = findViewById(R.id.ch2_calc_btn_add);
        btn_sub = findViewById(R.id.ch2_calc_btn_sub);
        btn_mul = findViewById(R.id.ch2_calc_btn_mul);
        btn_div = findViewById(R.id.ch2_calc_btn_div);
        btn_point = findViewById(R.id.ch2_calc_btn_point);
        btn_equal = findViewById(R.id.ch2_calc_btn_equal);
    }
}
